-- card: 6150 from stack: in.2 -- bmap block id: 3454 -- flags: 0000 -- background id: 2598 -- name: Planets ----- HyperTalk script ----- on calculate Put "¡™£¢∞§¶•ªº–√∫" into planetSymbols Put "∑®†¥øπ“‘åß∂ƒ" into signSymbols put "Aries,Taurus,Gemini,Cancer,Leo,Virgo,Libra,Scorpio," & "Sagittarius,Capricorn,Aquarius,Pisces" into signList set cursor to busy -- ************************************************************** -- ** Collecting the birthdata from the input fields ********** -- ************************************************************** Put card field monthNumber of card "Data entry"into monthNumber Put card field dayNumber of card "Data entry" into dayNumber Put card field yearNumber of card "Data entry" into yearNumber Put card field hourNumber of card "Data entry" into hourNumber Put card field minuteNumber of card "Data entry" into minuteNumber -- If (hilite of card button "am" of card "Data entry") is true then put "A" into amPM else put "P" into amPM -- If (hilite of card button "Daylight Savings" of card "Data entry") is true then put "D" into timeType else put "S" into timeType -- Put char 1 to 3 of card field "Longitude" of card "Data entry" into longitudeDegrees Put char 5 to 6 of card field "Longitude" of card "Data entry" into longitudeMinutes Put card field "Longitude" of card "Data entry" into longitude if ("w" is in longitude) or ("W" is in longitude) then put "W" into eastWEST else put "E" into eastWEST -- put card field zone of card "Data entry" into zone put char 1 to 2 of zone into ZoneHours put char 4 to 5 of zone into ZoneMinutes put ZoneHours + ZoneMinutes/60 into zone -- set cursor to busy -- Put char 1 to 2 of card field "Latitude" of card "Data entry" into latitudeDegrees Put char 4 to 5 of card field "Latitude" of card "Data entry" into latitudeMinutes Put card field "Latitude" of card "Data entry" into Latitude if "n" is in Latitude or "N" is in Latitude then put "N" into northSOUTH else put "S" into northSOUTH -- set cursor to busy -- *********************************************************** -- ** DAYS PAST 12H UT 31 DEC 1899 ************************* -- *********************************************************** Put daysPast( monthNumber,¬ -- 1..12 dayNumber,¬ -- 1..31 yearNumber,¬ -- 1800..2099 hourNumber,¬ -- 1..12 minuteNumber,¬ -- 0..59 amPM,¬ -- "A" or "P" timeType,¬ -- "S"tandard or "D"aylight savings eastWEST,¬ -- "E" or "W" zone¬ -- 0.0..11.0 ) into theDaysPast -- Test for error message rather than number returned if not (char 1 of theDaysPast is in "0123456789") then put theDaysPast -- It's an error message, not proper output exit calculate end if -- set cursor to busy -- ************************************************************ -- ** CALCULATE PLANET POSITIONS **************************** -- ************************************************************ -- The output of the function planets() is 11 "words" separated -- by a space. Each word corresponds to a planet: -- 1 = Moon -- 2 = Sun -- 3 = Mercury -- 4 = Venus -- 5 = Mars -- 6 = Jupiter -- 7 = Saturn -- 8 = Uranus -- 9 = Neptune -- 10 = Pluto -- 11 = True North Node of the Moon -- 12 = Ascendant (will be appended after house calculation) -- 13 = Midheavan (will be appended after house calculation) -- Each planet "word" has 4 factors, separated by a comma so -- Hypertalk can refer to it as an "item" -- 1) Planet longitude 0.000..359.999 [3 places after decimal) -- 2) Two digit string, degrees within a sign 00..29 -- 3) One character sign symbol in Astrology font (stack resource) -- 4) Two digit string, minutes within sign 00..59 Put planets(theDaysPast) into planetStr set cursor to busy -- Test for error message rather than number returned if not (char 1 of planetStr is in "0123456789") then Put planetStr -- It's an error message, not proper output exit calculate end if set cursor to busy -- ********************************************************** -- ** CALCULATE HOUSE CUSPS ******************************* -- ********************************************************** -- The output of the function houses() is 14 "words" separated -- by a space. Each word corresponds to a cusp: -- 1..12 = Cusps, 13 = Midheaven, 14 = Vertex (not used) -- Each house "word" has 4 factors, separated by a comma so -- Hypertalk can refer to it as an "item" -- 1) Cusp longitude 0.000..359.999 [3 places after decimal) ---- For cusps 2..12 the longitude is the angular distance from ---- from the ascendant. So, if you wanted the normal longitude ---- degrees of the 3rd house cusp, you would add the ascendant ---- (cusp 1) to the longitude output by the function Houses() ---- for the 3rd house cusp. I designed the function this way to ---- make coding the house placement routine simpler. -- 2) Two digit string, degrees within a sign 00..29 -- 3) One character sign symbol in Astrology font (stack resource) -- 4) Two digit string, minutes within sign 00..59 If (hilite of card button "Equal" of card "Data Entry") then put "e" into houseSystem else if (hilite of card button "Placidus" of card "Data Entry") then put "p" into houseSystem else if (hilite of card button "Koch" of card "Data Entry") then put "k" into houseSystem end if put houses( theDaysPast,¬ -- (1) -36525..40000 longitudeDegrees,¬ -- (2) 0..179 eastWEST,¬ -- (3) "E" or "W" longitudeMinutes,¬ -- (4) 0..59 latitudeDegrees,¬ -- (5) 0..89 northSOUTH,¬ -- (6) "N" or "S" latitudeMinutes,¬ -- (7) 0..59 houseSystem)¬ -- (8) "E"qual "P"lacidus "K"och into cuspStr set cursor to busy -- Test for error message returned if not ("0123456789" contains character 1 of cuspStr) then put cuspStr -- it's an error message, not proper output exit calculate end if set cursor to busy -- ****************************************************** -- ** Planet Posting routine ************************** -- ****************************************************** Put planetStr && word 1 of cuspStr && word 13 of cuspStr into planetStr -- Append Ascendant and Midheaven repeat with planetNumber = 1 to 13 -- Post full sign name -- Put item 1 of (word planetNumber of planetStr) into planetLong put (trunc(planetLong) div 30) + 1 into signNumber Put item signNumber of signList into line planetNumber of card field "Sign names" -- Post planet symbol -- Put character planetNumber of planetSymbols into line planetNumber of card field "Planet Symbols" -- Post DDsignMM -- Put item 2 of (word planetNumber of planetStr) into dd Put item 3 of (word planetNumber of planetStr) into signSymbol Put item 4 of (word planetNumber of planetStr) into mm Put dd & signSymbol & mm into line planetNumber of card field "Planet DDsignMM" set cursor to busy end repeat -- ********************************************************* -- ** Creating table of slot longitudes for all houses *** -- ** "cuspSlotTable". The planet data will be placed *** -- ** in another variable "planetsBySlot" *** -- ********************************************************* Put cuspSlotTableMaker(cuspStr) into cuspSlotTable --+put cuspSlotTable into card field "cusp & slot Table" --+if false then -- test **** --+Put item 1 of (word 1 of cuspStr) into ascendantLong --+Repeat with SlotNumber = 1 to 60 --+Put (line SlotNumber of cuspSlotTable) + ascendantLong into slotLong --+If slotLong > 360 then subtract 360 from slotLong --+Get convertSlotsToHouseAndSlot(slotNumber) --+Put item 1 of it into houseNumber --+Put item 2 of it into slot --+Put houseNumber & "," & slot & "," & slotLong --+& "," & degreesToSign(slotLong) into line slotNumber of var --+Put var into card field "cusp & slot table" --+end repeat --+end if -- test ** -- ************************************************************ -- ** Fill variable "planetsbySlot" with planet symbol and ** -- ** ddSignMM using "cuspSlotTable" ** -- ************************************************************ Put item 1 of (word 1 of cuspStr) into ascendantLong Put empty into planetsBySlot if (hilite of card button "Equal" of card "Data Entry") then Put 12 into upper else put 11 into upper Repeat with index = 1 to upper set cursor to busy Put item index of "1,2,3,4,5,6,7,8,9,10,11,13" into planetNumber Put item 1 of (word planetNumber of PlanetStr) into planetLongA Subtract ascendantLong from planetLongA -- Cusps relative to ASC If planetLongA < 0 then Add 360 to planetLongA Put initialSlotNumber(cuspSlotTable,planetLongA) into slotNumber -- Filling house field -- Get convertSlotsToHouseAndSlot(slotNumber) Put item 1 of it into houseNumber Put houseNumber into line planetNumber of card field "House" -- ************************************************** -- ** Inserting newPlanetData into planetsBySlot ** -- ************************************************** Put character planetNumber of planetsymbols & "," & word planetNumber of planetStr into newPlanetData If line slotNumber of planetsBySlot is empty then put newPlanetData into line slotNumber of planetsBySlot else -- slot already filled with planet data Put item 2 of newPlanetData into newLong Put item 2 of (line slotNumber of planetsBySlot) into oldLong Put item 2 of convertSlotsToHouseAndSlot(slotNumber) into initialSlotOfHouse Put slotNumber - initialSlotOfHouse + 1 into lowestSlot Put slotNumber + 5 - initialSlotOfHouse into highestSlot If newLong >= oldLong then Put insertNewGreaterThanEqualOld( newPlanetData, slotNumber, lowestSlot, highestSlot, planetsBySlot) into planetsBySlot else If newLong < oldLong then Put insertNewLessThanOld( newPlanetData, slotNumber, lowestSlot, highestSlot, planetsBySlot) into planetsBySlot end if end if set cursor to busy end repeat -- **************************************** -- ** A S P E C T S ********************* -- **************************************** Get aspects(planetStr) lock screen go to card "Horoscope" Choose select tool doMenu "select all" doMenu "cut picture" Unlock screen with barn door close Get makeHoroscope(planetsBySlot, cuspStr) If (highLight of card button "Turn off sound" of card "First") is false then repeat for 3 times play "twz" end repeat end if end calculate --================================================================= Function cuspSlotTableMaker cuspStr -- Returns longitude of all slots in all houses Put 5 into slotsPerHouse Put item 1 of (word 1 of cuspStr) into ascendantLong Put 0 into lineNumber Repeat with cuspNumber = 1 to 12 -------------------- If cuspNumber > 1 then put item 1 of (word cuspNumber of cuspStr) into cusp0 else put 0 into cusp0 end if If (cuspNumber < 12) then Put item 1 of (word cuspNumber + 1 of cuspStr) into cusp1 else Put 360 into cusp1 end if Put cusp1 - cusp0 into delta Repeat with slotNumber = 1 to slotsPerHouse ------------- Add 1 to lineNumber Set cursor to busy Put cusp0 + (slotNumber-1) * delta/slotsPerHouse into slotLong Put slotLong into line lineNumber of cuspSlotTable end repeat -- slotNumber end repeat -- cuspNumber return cuspSlotTable end cuspSlotTableMaker --================================================================= Function initialSlotNumber cuspSlotTable, planetLong -- 0..360 -- Returns the slot number for a given planet longitude -- ******************* -- ** First guess ** -- ******************* Put (the number of lines in cuspSlotTable) into totalSlots Put totalSlots div 12 into slotsPerHouse If abs(planetLong-360) < 0.002 then put 0 into planetLong Put trunc(planetLong*totalSlots/360) + 1 into slotNumber0 -- **************************************** -- ** Get slot and following slot long ** -- **************************************** Put line slotNumber0 of cuspSlotTable into slotLong0 Put slotNumber0 + 1 into slotNumber1 If slotNumber1 <= totalslots then Put line slotNumber1 of cuspSlotTable into slotLong1 else Put 360 into slotLong1 end if -- *************************** -- ** Slot number correct ** -- *************************** If (planetLong >= slotLong0) and (planetLong < slotLong1) then Return slotNumber0 Exit initialSlotNumber end if -- ********************************************** -- ** Slot number too high, move planet back ** -- ********************************************** If planetLong < slotLong0 then Repeat until planetLong >= slotLong0 Subtract 1 from slotNumber0 Put line slotNumber0 of cuspSlotTable into slotLong0 end repeat Return slotNumber0 Exit initialSlotNumber end if -- ************************************************ -- ** Slot number too low, move planet forward ** -- ************************************************ If planetLong > slotLong1 then Repeat until (planetLong < slotLong1) or (slotNumber0 = totalSlots) Add 1 to slotNumber0 Put line slotNumber0 + 1 of cuspSlotTable into slotLong1 end repeat Return slotNumber0 Exit initialSlotNumber end if end initialSlotNumber --================================================================== Function insertNewLessThanOld newPlanetData,¬ -- planet_symbol,long,dd,sign_symbol,mm initialSlotNumber, lowestSlot,¬ -- within house 1..60 highestSlot,¬ -- within house 1..60 planetsBySlot -- variable with 60 lines -- Returns planetsBySlot with new planet inserted and -- other planets rearranged if necessary -- ***************************************************************** -- ** Is previous slot empty, then put newPlanetData there ******** -- ***************************************************************** If (initialSlotNumber > lowestSlot) then if line initialSlotNumber - 1 of planetsbySlot is empty then Put newPlanetData into line initialSlotNumber - 1 of planetsBySlot --+Put "_< previous slot empty, InitialSlotNumber - 1 =[" & --+initialSlotNumber - 1 & "], newPlanetData=[" & --+newPlanetData & "]" after card field "test 0" -- test ***** return planetsBySlot exit insertNewLessThanOld end if end if -- ********************************************************** -- ** Previous slot full; is there an empty slot behind? ** -- ********************************************************** Put 0 into emptySlotNumber If (initialSlotNumber > lowestSlot + 1) and line initialSlotNumber - 1 of planetsbySlot is not empty then Repeat with s = initialSlotNumber - 2 down to lowestSlot If line s of planetsBySlot is empty then Put s into emptySlotNumber exit repeat end if end repeat end if -- **************************************************************** -- ** Yes there is an empty slot behind, push planets backward ** -- ** and put newPlanetData into initialSlotNumber - 1 ** -- **************************************************************** If emptySlotNumber > 0 then Repeat with s = emptySlotNumber+1 to initialSlotNumber - 1 Put line s of planetsBySlot into line s-1 of planetsBySlot end repeat Put newPlanetData into line initialSlotNumber -1 of planetsBySlot return planetsBySlot exit insertNewLessThanOld end if -- *************************************************************** -- ** No empty slot behind, look ahead for empty slot ********** -- *************************************************************** Put 0 into emptySlotNumber Repeat with s = initialSlotNumber+1 to highestSlot If line s of planetsBySlot is empty then Put s into emptySlotNumber exit repeat end if end repeat -- *************************************************************** -- ** Yes there is an empty slot ahead, push planets forward *** -- ** and put newPlanetData into initialSlotNumber ************** -- *************************************************************** If emptySlotNumber > 0 then Repeat with s = emptySlotNumber-1 down to initialSlotNumber Put line s of planetsBySlot into line s + 1 of planetsBySlot end repeat Put newPlanetData into line initialslotNumber of planetsBySlot return planetsBySlot exit insertNewLessThanOld end if -- **************************************************** -- ** Sixth planet did not fit in house, put in ** -- ** line 61 of planetsBySlot ** -- **************************************************** Get convertSlotsToHouseAndSlot(initialslotNumber) Put item 1 of it into houseNumber Put newPlanetData && houseNumber into line 61 of planetsBySlot return planetsbySlot -- end insertNewLessThanOld --================================================================== Function insertNewGreaterThanEqualOld newPlanetData,¬ -- planet_symbol,long,dd,sign_symbol,mm initialSlotNumber, lowestSlot,¬ -- within house 1..60 highestSlot,¬ -- within house 1..60 planetsBySlot -- variable with 60 lines -- Returns planetsBySlot with new planet inserted and -- other planets rearranged if necessary -- ************************************************************ -- ** Is next slot empty, then put newPlanetData there ******* -- ************************************************************ If (initialSlotNumber < highestSlot) then if line initialSlotNumber + 1 of planetsbySlot is empty then Put newPlanetData into line initialSlotNumber + 1 of planetsBySlot return planetsBySlot exit insertNewGreaterThanEqualOld end if end if -- ********************************************************** -- ** Next slot full; is there an empty slot ahead? ******* -- ********************************************************** Put 0 into emptySlotNumber If (initialSlotNumber < highestSlot - 1) and line initialSlotNumber + 1 of planetsBySlot is not empty then Repeat with s = initialSlotNumber + 2 to highestSlot If line s of planetsBySlot is empty then Put s into emptySlotNumber exit repeat end if end repeat end if -- ************************************************************** -- ** Yes there is an empty slot ahead, push planets forward ** -- ** and put newPlanetData into initialSlotNumber + 1 ********* -- ************************************************************** If emptySlotNumber > 0 then Repeat with s = emptySlotNumber - 1 down to initialSlotNumber + 1 Put line s of planetsBySlot into line s + 1 of planetsBySlot end repeat Put newPlanetData into line initialSlotNumber + 1 of planetsBySlot return planetsBySlot exit insertNewGreaterThanEqualOld end if -- *************************************************************** -- ** No empty slot ahead, look behind for empty slot ********** -- *************************************************************** Put 0 into emptySlotNumber Repeat with s = initialSlotNumber - 1 down to lowestSlot If line s of planetsBySlot is empty then Put s into emptySlotNumber exit repeat end if end repeat -- *************************************************************** -- ** Yes there is an empty slot behind, push planets backward ** -- ** and put newPlanetData into initialSlotNumber ************** -- *************************************************************** If emptySlotNumber > 0 then Repeat with s = emptySlotNumber + 1 to initialSlotNumber Put line s of planetsBySlot into line s - 1 of planetsBySlot end repeat Put newPlanetData into line initialslotNumber of planetsBySlot return planetsBySlot exit insertNewGreaterThanEqualOld end if -- **************************************************** -- ** Sixth planet did not fit in house, put in ** -- ** line 61 of planetsBySlot ** -- **************************************************** Get convertSlotsToHouseAndSlot(initialslotNumber) Put item 1 of it into houseNumber Put newPlanetData && houseNumber into line 61 of planetsBySlot return planetsbySlot -- end insertNewGreaterThanEqualOld --=================================================================== Function Aspects planetStr Put "¡™£¢∞§¶•ªº–√∫" into planetSymbols Put "©Ω…¬∆˚æ≈˙" into aspectSymbols repeat with N = 2 to 13 do "Put empty into card field PlanetAspects" & N & " of card planets" end repeat -- ****************************************************************** -- ** enter planet symbols at the (horizontal) top of aspect grid ** -- ****************************************************************** repeat with planetNumber = 2 to 13 do "Put PlanetAspects" & planetNumber & " into theField" Put character planetNumber of planetSymbols into line 1 of card field theField end repeat -- ******************************** -- ** Declare aspects and orbs ** -- ******************************** Put 0 into aspect1 -- conjunction Put 6 into orb1 -- Put 30 into aspect2 -- semisextile Put 2 into orb2 -- Put 45 into aspect3 -- semisquare Put 2 into orb3 -- Put 60 into aspect4 -- sextile Put 4 into orb4 -- Put 90 into aspect5 -- square Put 6 into orb5 -- Put 120 into aspect6 -- trine Put 6 into orb6 -- Put 135 into aspect7 -- sequisquare Put 2 into orb7 -- Put 150 into aspect8 -- Quincunx Put 2 into orb8 -- Put 180 into aspect9 -- opposition Put 6 into orb9 -- -- ************************************************************** -- ** Look at vertical planet "Pv" 1, then compare to EACH -- ** of the horizontal planets "Ph". Continue with Pv 2..12 -- ************************************************************** -- Repeat with pVnumber = 1 to 13 If pVnumber > 1 then Do "Put PlanetAspects" & pVnumber & " into mirrorField" Put item 1 of (word pVNumber of planetStr) into Pv -- Repeat with pHnumber = pVnumber + 1 to 13 do "Put PlanetAspects" & pHnumber & " into theField" Put item 1 of (word pHNumber of planetStr) into Ph -- Put abs(Pv-Ph) into delta If delta > 180 then put 360 - delta into delta put "Ÿ" into line pVnumber + 1 of card field theField If pVnumber > 1 then put "Ÿ" into line pHnumber + 1 of card field mirrorField -- Repeat with N =1 to 9 -- do "Put aspect" & N & " + orb" & N & " into high" do "Put aspect" & N & " - orb" & N & " into low" -- if delta <= low then put empty into line pVNumber + 1 of card field theField if pVNumber > 1 then put empty into line pHNumber + 1 of card field mirrorField exit repeat -- no aspect end if -- If (delta <= high) and (delta >= low) then put character N of aspectSymbols into line pVNumber + 1 of card field theField If pVnumber > 1 then put character N of aspectSymbols into line pHNumber + 1 of card field mirrorField exit repeat -- aspect found end if -- end repeat end repeat end repeat end Aspects --=================================================================== Function convertSlotsToHouseAndSlot slotNumber If (slotNumber > 60) or (slotNumber < 0) then -- Bad data trap answer "Slot number is [" & slotNumber & "], should be ≥ 1 or ≤ 60" exit convertSlotsToHouseAndSlot end if If (slotNumber mod 5 is 0) then Put slotNumber div 5 into houseNumber Put 5 into slot else Put (slotNumber div 5) + 1 into houseNumber Put slotNumber - (houseNumber-1)*5 into slot end if Return houseNumber & "," & slot end convertSlotsToHouseAndSlot --============================================================= on alignFields -- call this if you accidentally move the fields Put 287 into Yl Put 79 into Yu set the rectangle of card field "Planet Names" to 0,Yu ,81,Yl set cursor to busy set the rectangle of card field "Sign Names" to 81,Yu ,162,Yl set cursor to busy set the rectangle of card field "Planet Symbols" to 162,Yu,185,Yl set cursor to busy set the rectangle of card field "Planet DDsignMM" to 185,Yu,236,Yl set the rectangle of card field "House" to 236,Yu,257,Yl set cursor to busy -- Put 21 into width Put Yu - 15 into Yu Repeat with f = 2 to 13 set cursor to busy Put 236 + (f - 1) * width into Xu Put Xu + width into Xl do "set the rectangle of card field PlanetAspects" & f && "to Xu,Yu,Xl,Yl" end repeat -- end alignFields --============================================================== -- part 1 (field) -- low flags: 01 -- high flags: 4002 -- rect: left=0 top=79 right=287 bottom=81 -- title width / last selected line: 0 -- icon id / first selected line: 0 / 0 -- text alignment: 65535 -- font id: 2 -- text size: 12 -- style flags: 256 -- line height: 16 -- part name: Planet Names -- part 3 (field) -- low flags: 01 -- high flags: 4002 -- rect: left=81 top=79 right=287 bottom=162 -- title width / last selected line: 0 -- icon id / first selected line: 0 / 0 -- text alignment: 0 -- font id: 3 -- text size: 12 -- style flags: 0 -- line height: 16 -- part name: Sign names -- part 4 (field) -- low flags: 01 -- high flags: 4002 -- rect: left=185 top=79 right=287 bottom=236 -- title width / last selected line: 0 -- icon id / first selected line: 0 / 0 -- text alignment: 0 -- font id: 250 -- text size: 12 -- style flags: 0 -- line height: 16 -- part name: Planet DDsignMM -- part 13 (button) -- low flags: 00 -- high flags: A001 -- rect: left=346 top=296 right=342 bottom=446 -- title width / last selected line: 0 -- icon id / first selected line: 902 / 902 -- text alignment: 1 -- font id: 0 -- text size: 12 -- style flags: 0 -- line height: 16 -- part name: Return to Data Entry ----- HyperTalk script ----- on mouseUp visual effect iris close very slowly go to card "Data Entry" end mouseUp -- part 15 (field) -- low flags: 01 -- high flags: 4002 -- rect: left=162 top=79 right=287 bottom=185 -- title width / last selected line: 0 -- icon id / first selected line: 0 / 0 -- text alignment: 0 -- font id: 250 -- text size: 12 -- style flags: 0 -- line height: 16 -- part name: Planet symbols -- part 17 (field) -- low flags: 01 -- high flags: 4002 -- rect: left=236 top=79 right=287 bottom=257 -- title width / last selected line: 0 -- icon id / first selected line: 0 / 0 -- text alignment: 65535 -- font id: 4 -- text size: 12 -- style flags: 0 -- line height: 16 -- part name: House -- part 18 (field) -- low flags: 01 -- high flags: 4002 -- rect: left=257 top=64 right=287 bottom=278 -- title width / last selected line: 0 -- icon id / first selected line: 0 / 0 -- text alignment: 0 -- font id: 250 -- text size: 12 -- style flags: 0 -- line height: 16 -- part name: PlanetAspects2 -- part 19 (field) -- low flags: 01 -- high flags: 4002 -- rect: left=278 top=64 right=287 bottom=299 -- title width / last selected line: 0 -- icon id / first selected line: 0 / 0 -- text alignment: 0 -- font id: 250 -- text size: 12 -- style flags: 0 -- line height: 16 -- part name: PlanetAspects3 -- part 20 (field) -- low flags: 01 -- high flags: 4002 -- rect: left=299 top=64 right=287 bottom=320 -- title width / last selected line: 0 -- icon id / first selected line: 0 / 0 -- text alignment: 0 -- font id: 250 -- text size: 12 -- style flags: 0 -- line height: 16 -- part name: PlanetAspects4 -- part 21 (field) -- low flags: 01 -- high flags: 4002 -- rect: left=320 top=64 right=287 bottom=341 -- title width / last selected line: 0 -- icon id / first selected line: 0 / 0 -- text alignment: 0 -- font id: 250 -- text size: 12 -- style flags: 0 -- line height: 16 -- part name: PLanetAspects5 -- part 22 (field) -- low flags: 01 -- high flags: 4002 -- rect: left=341 top=64 right=287 bottom=362 -- title width / last selected line: 0 -- icon id / first selected line: 0 / 0 -- text alignment: 0 -- font id: 250 -- text size: 12 -- style flags: 0 -- line height: 16 -- part name: PlanetAspects6 -- part 23 (field) -- low flags: 01 -- high flags: 4002 -- rect: left=362 top=64 right=287 bottom=383 -- title width / last selected line: 0 -- icon id / first selected line: 0 / 0 -- text alignment: 0 -- font id: 250 -- text size: 12 -- style flags: 0 -- line height: 16 -- part name: PlanetAspects7 -- part 24 (field) -- low flags: 01 -- high flags: 4002 -- rect: left=383 top=64 right=287 bottom=404 -- title width / last selected line: 0 -- icon id / first selected line: 0 / 0 -- text alignment: 0 -- font id: 250 -- text size: 12 -- style flags: 0 -- line height: 16 -- part name: PlanetAspects8 -- part 25 (field) -- low flags: 01 -- high flags: 4002 -- rect: left=404 top=64 right=287 bottom=425 -- title width / last selected line: 0 -- icon id / first selected line: 0 / 0 -- text alignment: 0 -- font id: 250 -- text size: 12 -- style flags: 0 -- line height: 16 -- part name: PLanetAspects9 -- part 26 (field) -- low flags: 01 -- high flags: 4002 -- rect: left=425 top=64 right=287 bottom=446 -- title width / last selected line: 0 -- icon id / first selected line: 0 / 0 -- text alignment: 0 -- font id: 250 -- text size: 12 -- style flags: 0 -- line height: 16 -- part name: PlanetAspects10 -- part 27 (field) -- low flags: 01 -- high flags: 4002 -- rect: left=446 top=64 right=287 bottom=467 -- title width / last selected line: 0 -- icon id / first selected line: 0 / 0 -- text alignment: 0 -- font id: 250 -- text size: 12 -- style flags: 0 -- line height: 16 -- part name: PlanetAspects11 -- part 28 (field) -- low flags: 01 -- high flags: 4002 -- rect: left=467 top=64 right=287 bottom=488 -- title width / last selected line: 0 -- icon id / first selected line: 0 / 0 -- text alignment: 0 -- font id: 250 -- text size: 12 -- style flags: 0 -- line height: 16 -- part name: PlanetAspects12 -- part 29 (field) -- low flags: 01 -- high flags: 4002 -- rect: left=488 top=64 right=287 bottom=509 -- title width / last selected line: 0 -- icon id / first selected line: 0 / 0 -- text alignment: 0 -- font id: 250 -- text size: 12 -- style flags: 0 -- line height: 16 -- part name: PlanetAspects13 -- part 38 (button) -- low flags: 00 -- high flags: A001 -- rect: left=464 top=296 right=342 bottom=512 -- title width / last selected line: 0 -- icon id / first selected line: 26425 / 26425 -- text alignment: 1 -- font id: 0 -- text size: 12 -- style flags: 0 -- line height: 16 -- part name: Horoscope ----- HyperTalk script ----- on mouseUp visual effect wipe right very slowly Go to card "Horoscope" end mouseUp -- part contents for card part 1 ----- text ----- Moon Sun Mercury Venus Mars Jupiter Saturn Uranus Neptune Pluto True Node Ascendant Midheaven -- part contents for card part 3 ----- text ----- Capricorn Cancer Cancer Cancer Leo Leo Cancer Gemini Libra Leo Cancer Cancer Aries -- part contents for card part 15 ----- text ----- ¡ ™ £ ¢ ∞ § ¶ • ª º – √ ∫ -- part contents for card part 4 ----- text ----- 17ß36 14¥13 20¥05 16¥47 26ø33 26ø10 02¥06 11†01 01“38 07ø38 27¥40 26¥17 09∑53 -- part contents for card part 17 ----- text ----- 6 12 12 12 2 2 12 11 3 1 1 -- part contents for card part 18 ----- text ----- ™ ˙ © © ∆ -- part contents for card part 19 ----- text ----- £ ˙ © © -- part contents for card part 20 ----- text ----- ¢ ˙ © © -- part contents for card part 21 ----- text ----- ∞ © Ω Ω æ -- part contents for card part 22 ----- text ----- § © Ω Ω æ -- part contents for card part 23 ----- text ----- ¶ ∆ -- part contents for card part 24 ----- text ----- • ¬ … … ¬ -- part contents for card part 25 ----- text ----- ª ∆ ¬ -- part contents for card part 26 ----- text ----- º ¬ ˚ -- part contents for card part 27 ----- text ----- – Ω Ω … ¬ © -- part contents for card part 28 ----- text ----- √ Ω Ω … © -- part contents for card part 29 ----- text ----- ∫ ∆ æ æ ¬ ˚